package controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

import view.PanelMua;

public class BuyController implements ActionListener {
	private PanelMua panel;

	public BuyController(JPanel panelMua) {
		this.panel = (PanelMua) panelMua;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		switch (cmd) {
		case "add":
			if (!panel.getData().isEmpty()) {
				Vector<String> tmp = panel.getData().get(
						panel.getData().size() - 1);
				for (int i = 0; i < panel.getTable().getColumnCount(); i++) {
					for (int j = 0; j < tmp.size(); j++) {
						if (tmp.get(j) == null) {
							JOptionPane.showMessageDialog(panel,
									"Nhập dự liệu còn thiếu");
							return;
						}
					}
				}
			}
			panel.getData().add(new Vector<String>());
			panel.getTableModel().setDataVector(panel.getData(),
					panel.getColumnNames());
			break;
		case "ref":
			if (panel.getData().isEmpty()) {
				JOptionPane.showMessageDialog(panel,
						"Hiện tại chưa có dữ liệu!", "Lỗi",
						JOptionPane.ERROR_MESSAGE);
			} else if (JOptionPane.showConfirmDialog(panel,
					"Xóa hết danh sách dữ liệu hiện tại?", "Cảnh báo",
					JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION) {
				panel.getData().clear();
				panel.getTableModel().setDataVector(panel.getData(),
						panel.getColumnNames());
			}
			break;
		case "del":
			int[] rows = panel.getTable().getSelectedRows();
			for (int i = rows.length - 1; i > -1; i--) {
				panel.getData().remove(rows[i]);
			}
			panel.getTableModel().setDataVector(panel.getData(),
					panel.getColumnNames());
			break;
		case "comp":
			if (!panel.getData().isEmpty()) {
				int sumMoney = 0, sumThue = 0;
				try {
					for (int j = 0; j < panel.getData().size(); j++) { // rows
						int sl = Integer
								.parseInt(panel.getData().get(j).get(4));
						int donGia = Integer.parseInt(panel.getData().get(j)
								.get(5));
						sumMoney += (sl * donGia);
						sumThue += ((Double.parseDouble(panel.getData().get(j)
								.get(6)) / 100)
								* donGia * sl);
					}
					panel.setValue(sumMoney, sumThue, sumMoney + sumThue);
				} catch (Exception e2) {
					e2.printStackTrace();
					JOptionPane.showMessageDialog(panel, "Lỗi");
				}
			} else {
				JOptionPane.showMessageDialog(panel, "Chưa có dữ liệu");
			}
			break;
		}
	}

}
